﻿using GENERIC.Interfaces.Respository;
using GENERIC.Interfaces.Service;
using GENERIC.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GENERIC.Service
{
    /// <summary>
    /// Classe abstraite de base des services avec une clé primaire (ind)
    /// </summary>
    /// <typeparam name="TEntity"></typeparam>
    public abstract class AbstractIdService<TEntity> : AbstractService<TEntity>, IAbstractIdService<TEntity> where TEntity : IdModelBase
    {
        #region Constructor

        /// <summary>
        /// Initialise une nouvelle instance de la classe
        /// </summary>
        public AbstractIdService(IRepository<TEntity> repository)
            : base(repository)
        {
            
        }

        #endregion

        /// <summary>
        /// Obtenir une entité par son identifiant
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public TEntity GetById(int id)
        {
            return GetAll().Where(e => e.Id == id).Single();
        }
    }
}
